package controller.commoncontroller;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import view.commonview.InfoArea;
import model.editormodel.EditorModel;

/**
 * <b>Implementiert:</b> <code>ActionListener</code> <br>
 * <b>In Verbindung stehende Klassen:</b> <code>EditorModel, InfoArea</code><br>
 * <br>
 * Zugehoerige Controllerklasse zum Menueeintrag <i>Speichern</i>. Das
 * <code>EditorModel</code> wird angestossen die aktuelle Schaltung
 * abzuspeichern.
 * 
 * @author Team Locsi
 * 
 */
public class SaveCircuitListener implements ActionListener {

	private EditorModel eModel;
	private InfoArea iArea;

	/**
	 * Dieser Konstruktor erzeugt ein neues <code>SaveCircuitListener</code> -
	 * Objekt.
	 * 
	 * @param eModel
	 *            <code>EditorModel</code> - Referenz auf das
	 *            <code>EditorModel</code>
	 * @param iArea
	 *            <code>InfoArea</code> - Referenz auf die <code>Infoarea</code>
	 */
	public SaveCircuitListener(EditorModel eModel, InfoArea iArea) {
		this.eModel = eModel;
		this.iArea = iArea;
	}

	/**
	 * Diese Methode ruft die saveDialog()-Methode von UtilityDialogs auf, die
	 * die aktuelle Schaltung abspeichert.
	 */
	@Override
	public void actionPerformed(ActionEvent e) {
		if (!eModel.isEmptyCircuit()) {
			UtilityDialogs.saveDialog(eModel, UtilityDialogs.XML_EXTENSION);
		} else {

			// handelt es sich um eine leere Schaltung so kann diese nicht
			// gespeichert werden, dies wird dem Benutzer in der InfoArea
			// mitgeteilt.
			this.iArea
					.addInfoText("Eine leere Schaltung kann nicht abgespeichert werden");
		}
	}
}